package com.facade;

import java.io.Serializable;
import java.util.List;

import com.dao.DependenteDAO;
import com.model.Dependente;

public class DependenteFacade implements Serializable{
	private static final long serialVersionUID = 1L;
	
	private DependenteDAO dependenteDAO = new DependenteDAO();

	public void createDependente(Dependente dependente) {
		dependenteDAO.beginTransaction();
		dependenteDAO.save(dependente);
		dependenteDAO.commitAndCloseTransaction();
	}

	public void updateDependente(Dependente dependente) {
		dependenteDAO.beginTransaction();
		Dependente persistedDependente = dependenteDAO.find(dependente.getId());
		persistedDependente.setDependentesDoAssociado(dependente.getDependentesDoAssociado());
		persistedDependente.setNascimento(dependente.getNascimento());
		persistedDependente.setNome(dependente.getNome());
		
		dependenteDAO.update(persistedDependente);
		dependenteDAO.commitAndCloseTransaction();
	}

	public Dependente findDependente(int dependenteId) {
		dependenteDAO.beginTransaction();
		Dependente dependente = dependenteDAO.find(dependenteId);
		dependenteDAO.closeTransaction();
		return dependente;
	}

	public List<Dependente> listAll() {
		dependenteDAO.beginTransaction();
		List<Dependente> result = dependenteDAO.findAll();
		dependenteDAO.closeTransaction();
		return result;
	}

	public void deleteDependente(Dependente dependente) {
		dependenteDAO.beginTransaction();
		Dependente persistedDependente = dependenteDAO.findReferenceOnly(dependente.getId());
		dependenteDAO.delete(persistedDependente);
		dependenteDAO.commitAndCloseTransaction();
	}
}